package com.test.webtest.utils;

public class BubbleSortUtil {

    /**
     * 冒泡排序（支持正序/倒序控制）
     * @param arr 待排序数组
     * @param ascending 排序方向 true=升序，false=降序
     * @return 已排序数组
     */
    public static int[] bubbleSort(int[] arr, boolean ascending) {
        if (arr == null || arr.length <= 1) return arr;
        
        boolean swapped;
        for (int i = 0; i < arr.length - 1; i++) {
            swapped = false;
            for (int j = 0; j < arr.length - 1 - i; j++) {
                // 根据排序方向进行排序
                boolean needSwap = true;
                if (ascending) {
                    needSwap = arr[j] > arr[j + 1];
                } else {
                    needSwap = arr[j] < arr[j + 1];
                }
                
                if (needSwap) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    swapped = true;
                }
            }
            // 无交换时提前终止 
            if (!swapped) break;
        }
        return arr;
    }
}